// std::to_address 用法，即将一个类指针的变量传递给它，从而得到其地址
// cppreference:https://zh.cppreference.com/w/cpp/memory/to_address
#include<memory>
#include<iostream>
#include<vector>
int main()
{
    auto l=[](const auto & p)
    {
        std::cout<<std::to_address(p)<<'\n';
    };
    auto int_ptr=std::make_unique<int>(15);

    auto int_ptr2=std::make_unique<int>(15);
    int i{17};

    l(int_ptr); // 直接传只能指针 输出 0x418eb0，看出地址位较低，是在heap上new出来的
    l(&i);  // 传递取地址int变量 输出 0x7fffffffda04 ，看出地址位很高，是在栈上分配的
    //l(i); /// 无法运行
    std::vector<int> ivec{1,2,3,4};
    l(ivec.begin()); //迭代器也可以，迭代器是一个指针  输出0x419300，可以看出也是在heap上分配的
}